package com.xydtech.ecard.ftp.mapper;

import com.xydtech.ecard.ftp.domain.FtpDepositLoanRateConfig;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author: liliya
 * @Description: FTP存贷款收益率曲线ftp_deposit_loan_rate_config
 * @Date: Created in 2023/8/16 16:18
 * @Modified:
 */

public interface FtpDepositLoanRateConfigMapper {

    /**
     * 查询全表基础数据
     * @return
     */
    List<FtpDepositLoanRateConfig> selectBaseList();

    /**
     * 通过期限匹配法-定价期限(天数下限,闭区间)查对应区间
     * @param pricingPeriod
     * @return
     */
    FtpDepositLoanRateConfig selectBaseListByDayOfUnderClosed(@Param("pricingPeriod") Integer pricingPeriod, @Param("configType") Integer configType);

    /**
     * 通过期限匹配法:定价期限(天数上限,闭区间)和config_key查对应区间
     * @param pricingPeriod
     * @param configKey
     * @return
     */
    FtpDepositLoanRateConfig selectBaseListByDayOfUpperClosed(@Param("pricingPeriod") Integer pricingPeriod, @Param("configKey") String configKey, @Param("configType") Integer configType);

    /**
     * 通过期限匹配法:天数下限查对应区间
     * @param configUnderDay
     * @return
     */
    FtpDepositLoanRateConfig selectBaseListByConfigUnderDay(@Param("configUnderDay") Integer configUnderDay, @Param("configType") Integer configType);

    /**
     * 通过期限匹配法:期限标识,N天/周W/月M/Y年查对应区间
     * @param configKey
     * @return
     */
    FtpDepositLoanRateConfig selectBaseListByConfigKey(@Param("configKey") String configKey, @Param("configType") Integer configType);

    /**
     * 通过config_type查询所有,每条数据以config_key作为KEY
     * @param configType
     * @return
     */
    @MapKey("configKey")
    Map<String,FtpDepositLoanRateConfig> selectBaseListByConfigTypeOfConfigKeyMap(@Param("configType") Integer configType);

    /**
     * 查询
     */
    FtpDepositLoanRateConfig selectBaseById(Integer id);

    /**
     * 新增
     */
    int insertBase(FtpDepositLoanRateConfig config);

    /**
     * 修改
     */
    int updateBase(FtpDepositLoanRateConfig config);

    /**
     * 删除单条
     */
    int deleteBaseById(Long configId);

    /**
     * 批量删除
     */
    int deleteBaseByIds(Long[] configIds);



}
